import Vue from 'vue'

import Cookies from 'js-cookie'

import 'normalize.css/normalize.css' // a modern alternative to CSS resets

import Element from 'element-ui'
import './styles/element-variables.scss'
// import enLang from 'element-ui/lib/locale/lang/en' // 如果使用中文语言包请默认支持，无需额外引入，请删除该依赖

import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

import './icons' // icon
import './permission' // permission control
import './utils/error-log' // error log

import * as filters from './filters' // global filters

/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online ! ! !
 */
if (process.env.NODE_ENV === 'production') {
    const { mockXHR } = require('../mock')
    mockXHR()
}

Vue.use(Element, {
    size: Cookies.get('size') || 'medium', // set element-ui default size
    // locale: enLang // 如果使用中文，无需设置，请删除
})

// register global utility filters
Object.keys(filters).forEach(key => {
    Vue.filter(key, filters[key])
})

Vue.config.productionTip = false

new Vue({
    el: '#app',
    router,
    store,
    render: h => h(App)
})

// 时间戳转年月日

Vue.prototype.getDataInfo = function(value) {         
        let  time  =  new  Date(value);            
        let  y  =  time.getFullYear();            
        let  m  =  time.getMonth()  +  1;            
        let  d  =  time.getDate();            
        let  h  =  time.getHours();            
        let  mm  =  time.getMinutes();            
        let  s  =  time.getSeconds();            
        function  add0(m)  {  return  m  <  10  ?  '0'  +  m  :  m  }            
        return  y  +  '-'  +  add0(m)  +  '-'  +  add0(d);
    }
    // 时间戳转时分秒
Vue.prototype.getTimeInfo = function(value) {         
    let  time  =  new  Date(value);            
    let  y  =  time.getFullYear();            
    let  m  =  time.getMonth()  +  1;            
    let  d  =  time.getDate();            
    let  h  =  time.getHours();            
    let  mm  =  time.getMinutes();            
    let  s  =  time.getSeconds();            
    function  add0(m)  {  return  m  <  10  ?  '0'  +  m  :  m  }            
    return  h + ":" + add0(mm) + ":" + add0(s);
}

Vue.prototype.isObjectEqual = (obj1, obj2) => {
    let o1 = obj1 instanceof Object;
    let o2 = obj2 instanceof Object;
    if (!o1 || !o2) { // 如果不是对象 直接判断数据是否相等
        return obj1 === obj2
    }
    // 判断对象的可枚举属性组成的数组长度
    if (Object.keys(obj1).length !== Object.keys(obj2).length) {
        return false;
    }
    for (let attr in obj1) {
        let a1 = Object.prototype.toString.call(obj1[attr]) == '[object Object]'
        let a2 = Object.prototype.toString.call(obj2[attr]) == '[object Object]'
        let arr1 = Object.prototype.toString.call(obj1[attr]) == '[object Array]'
        if (a1 && a2) {
            // 如果是对象继续判断
            return isObjectEqual(obj1[attr], obj2[attr])
        } else if (arr1) {
            // 如果是对象 判断
            if (obj1[attr].toString() != obj2[attr].toString()) {
                return false;
            }
        } else if (obj1[attr] !== obj2[attr]) {
            // 不是对象的就判断数值是否相等
            return false
        }
    }
    return true
}